/****************************************************************************

Force Engine v0.5

Creado: 28/03/08
Clase: Entity3D.h
Hecho by: German Battiston AKA Melkor

****************************************************************************/

//---------------------------------------------------------------------------
#ifndef ENTITY3D_H
#define ENTITY3D_H
//---------------------------------------------------------------------------
#include "../Defines/Defines.h"
#include "../Graphics/Graphics.h"
//---------------------------------------------------------------------------
class FORCEENGINE_API Entity3D
{
public:

	Entity3D(Graphics &rkGraphics);
	virtual ~Entity3D();
	void Rotate(D3DXVECTOR3 kD3DV3Rot);
	void Scale(D3DXVECTOR3 kD3DV3Scale);
	void Translate(D3DXVECTOR3 kD3DV3OffSet);
	void TranslateX(float fOffSetX);
	void TranslateY(float fOffSetY);
	void TranslateZ(float fOffSetZ);
	virtual void TransFormByMatrix(D3DXMATRIX * pkD3DXMatrix);
	void CopyTransform(D3DXMATRIX * pkD3DMatTransform);
	
	D3DXVECTOR3 GetPos();
	D3DXVECTOR3 GetRot();
	D3DXVECTOR3 GetScale();
	D3DXMATRIX	GetTransform();
	

	void SetTransform();
	void LoadIdentity();

	void SetName(std::string kName);
	const std::string& GetName() const;

	virtual void Draw(){}
	virtual void Update(float fTimeBetweenFrames);

protected:
	
	Graphics * m_pkGraphics;

	D3DXMATRIX m_kMatLocalTransform;

	std::string m_kName;

	D3DXVECTOR3 m_kD3DV3Rot;
	D3DXVECTOR3 m_kD3DV3Pos;
	D3DXVECTOR3 m_kD3DV3Scale;
};
//---------------------------------------------------------------------------

#endif /*--- ENTITY_3D ---*/

//---------------------------------------------------------------------------